DEFINITION MODULE VScreen;

(*
VDI Escape Functions for Screens.

UK __DATE__ __TIME__
*)

(*DEF_SWITCHES*)

FROM PORTAB IMPORT UNSIGNEDWORD,ANYWORD;
FROM VDI    IMPORT XY;

(* [V]DI: [Q]uery Addressable Alpha [Ch]aracter [Cells] ********************)

PROCEDURE VQChCells(    Handle : UNSIGNEDWORD;
                    VAR Rows   : UNSIGNEDWORD;
                    VAR Columns: UNSIGNEDWORD);

(* [V]DI: [Exit] Alpha [Cur]sor Mode ***************************************)

PROCEDURE VExitCur(Handle: UNSIGNEDWORD);

(* [V]DI: [Enter] Alpha [Cur]sor Mode **************************************)

PROCEDURE VEnterCur(Handle: UNSIGNEDWORD);

(* [V]DI: Alpha [Cur]sor [Up] **********************************************)

PROCEDURE VCurUp(Handle: UNSIGNEDWORD);

(* [V]DI: Alpha [Cur]sor [Down] ********************************************)

PROCEDURE VCurDown(Handle: UNSIGNEDWORD);

(* [V]DI: Alpha [Cur]sor [Right] *******************************************)

PROCEDURE VCurRight(Handle: UNSIGNEDWORD);

(* [V]DI: Alpha [Cur] [Left] ***********************************************)

PROCEDURE VCurLeft(Handle: UNSIGNEDWORD);

(* [V]DI: [Home] Alpha [Cur]sor ********************************************)

PROCEDURE VCurHome(Handle: UNSIGNEDWORD);

(* [V]DI: [E]rase To [E]nd [O]f Alpha [S]creen *****************************)

PROCEDURE VEEOS(Handle: UNSIGNEDWORD);

(* [V]DI: [E]rase To [E]nd [O]f Alpha Text [L]ine **************************)

PROCEDURE VEEOL(Handle: UNSIGNEDWORD);

(* [V]DI: Direct Alpha [Cur]sor [Address] **********************************)

PROCEDURE VCurAddress(Handle: UNSIGNEDWORD;
                      Row   : UNSIGNEDWORD;
                      Column: UNSIGNEDWORD);

(* [V]DI: Output [Cur]sor Addressable Alpha [Text] *************************)

PROCEDURE VCurText(    Handle: UNSIGNEDWORD;
                   VAR String: ARRAY OF CHAR);

(* [V]DI: [R]e[v]erse Video [On] *******************************************)

PROCEDURE VRvOn(Handle: UNSIGNEDWORD);

(* [V]DI: [R]e[v]erse Video [Off] ******************************************)

PROCEDURE VRvOff(Handle: UNSIGNEDWORD);

(* [V]DI: [Q]uery Current Alpha [Cur]sor [Address] *************************)

PROCEDURE VQCurAddress(    Handle: UNSIGNEDWORD;
                       VAR Row   : UNSIGNEDWORD;
                       VAR Column: UNSIGNEDWORD);

(* [V]DI: [Q]uery [Tab]let [Status] ****************************************)

PROCEDURE VQTabStatus(Handle: UNSIGNEDWORD): BOOLEAN;

(* [V]DI: [Hard] [Copy] ****************************************************)

PROCEDURE VHardCopy(Handle: UNSIGNEDWORD);

(* [V]DI: [D]i[sp]lay Graphic [Cur]sor At Location *************************)

PROCEDURE VDspCur(Handle: UNSIGNEDWORD;
                  X     : XY;
                  Y     : XY);

(* [V]DI: [R]e[m]ove Last Graphic [Cur]sor *********************************)

PROCEDURE VRmCur(Handle: UNSIGNEDWORD);

(* [V]DI: [S]elect [Palette] ***********************************************)

PROCEDURE VSPalette(Handle : UNSIGNEDWORD;
                    Palette: UNSIGNEDWORD): UNSIGNEDWORD;

(* [V]DI: Generate Specified [Sound] ***************************************)

PROCEDURE VSound(Handle   : UNSIGNEDWORD;
                 Frequency: UNSIGNEDWORD;
                 Duration : UNSIGNEDWORD);

(* [V]DI: [S]et Tone [Mute] ************************************************)

TYPE MutingFlags = (Return,Enable,Disable);

PROCEDURE VSMute(Handle: UNSIGNEDWORD;
                 Action: MutingFlags): BOOLEAN;

(* [V]DI: [S]et Line [Offset] **********************************************)

PROCEDURE VOffset(Handle: UNSIGNEDWORD;
                  Offset: UNSIGNEDWORD);

(* [V]DI: [Init] System [Font] *********************************************)

PROCEDURE VFontInit(Handle  : UNSIGNEDWORD;
                    FontHigh: ANYWORD;
                    FontLow : ANYWORD);

END VScreen.
